package UserServices;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import ModeloDominio.*;
import ModeloDominio.Enumerados.Area;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.UserTransaction;
//import Controllers.MedicoController;

/**
 *
 * @author FIGUEIRAL
 */
public class Registo {

    @PersistenceContext
    private EntityManager em;
    /**
     * <p>The transaction resource.</p>
     */
    @Resource
    private UserTransaction utx;
    private String nome;
    private String morada;
    private String localidade;
    private String codigopostal1;
    private String codigopostal2;
    private String telefone;
    private String fax;
    private String email;
    private String dia;
    private String mes;
    private String ano;
    private String ordemprofissional;
    private String decp1;
    private String decp2;
    private String decp3;
    private String nif;
    private String nib;
    private String diagnostico;
    private String RPT;
    private String RT;
    private String areaSaude;
    private TabelaMedico[] tab;
    private String val_med;
    private String pass;
    private String log;

    public String getLog() {
        return log;
    }

    public void setLog(String log) {
        this.log = log;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getVal_med() {
        return val_med;
    }

    public void setVal_med(String val_med) {
        this.val_med = val_med;
    }

    public TabelaMedico[] getTab() {
        return tab;
    }

    public void setTab(TabelaMedico[] tab) {
        this.tab = tab;
    }

    public String getAreaSaude() {
        return areaSaude;
    }

    public void setAreaSaude(String areaSaude) {
        this.areaSaude = areaSaude;
    }

    public String getRT() {
        return RT;
    }

    public void setRT(String RT) {
        this.RT = RT;
    }

    public String getRPT() {
        return RPT;
    }

    public void setRPT(String RPT) {
        this.RPT = RPT;
    }

    public String getDiagnostico() {
        return diagnostico;
    }

    public void setDiagnostico(String diagnostico) {
        this.diagnostico = diagnostico;
    }

    public String getCodigopostal1() {
        return codigopostal1;
    }

    public String getCodigopostal2() {
        return codigopostal2;
    }

    public void setCodigopostal2(String codigopostal2) {
        this.codigopostal2 = codigopostal2;
    }

    public void setCodigopostal1(String codigopostal1) {
        this.codigopostal1 = codigopostal1;
    }

    public String getAno() {
        return ano;
    }

    public void setAno(String ano) {
        this.ano = ano;
    }

    public String getDia() {
        return dia;
    }

    public void setDia(String dia) {
        this.dia = dia;
    }

    public String getMes() {
        return mes;
    }

    public void setMes(String mes) {
        this.mes = mes;
    }

    public String getDecp1() {
        return decp1;
    }

    public void setDecp1(String decp1) {
        this.decp1 = decp1;
    }

    public String getDecp2() {
        return decp2;
    }

    public void setDecp2(String decp2) {
        this.decp2 = decp2;
    }

    public String getDecp3() {
        return decp3;
    }

    public void setDecp3(String decp3) {
        this.decp3 = decp3;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public String getLocalidade() {
        return localidade;
    }

    public void setLocalidade(String localidade) {
        this.localidade = localidade;
    }

    public String getMorada() {
        return morada;
    }

    public void setMorada(String morada) {
        this.morada = morada;
    }

    public String getNib() {
        return nib;
    }

    public void setNib(String nib) {
        this.nib = nib;
    }

    public String getNif() {
        return nif;
    }

    public void setNif(String nif) {
        this.nif = nif;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getOrdemprofissional() {
        return ordemprofissional;
    }

    public void setOrdemprofissional(String ordemprofissional) {
        this.ordemprofissional = ordemprofissional;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String VerInfo() {
        List cats = null;
        int id_c;
        try {
            utx.begin();
            javax.persistence.Query q = em.createQuery("SELECT L.id FROM Utente L WHERE L.nif='" + nif + "'");
            cats = q.getResultList();
            utx.commit();
        } catch (Exception ex) {
            Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        if (cats.size() == 0) {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Informaçao Failed!",
                    "The specified nif is not correct.");
            context.addMessage(null, message);
        } else {
            id_c = Integer.parseInt(cats.get(0).toString());

            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.diagnostico FROM Diagnostico L WHERE L.idutente=" + id_c);
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            if (cats.size() > 0) {
                diagnostico = "";
                for (int x = 0; x < cats.size(); x++) {
                    diagnostico = diagnostico + cats.get(x).toString() + "\n";
                }
            }



            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.tratamento FROM Tratamento L WHERE L.idutente=" + id_c);
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            if (cats.size() > 0) {
                RT = "";
                for (int x = 0; x < cats.size(); x++) {
                    RT = RT + cats.get(x).toString() + "\n";
                }
            }

            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.nConsultas FROM PlanoTratamento L WHERE L.idutente=" + id_c);
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            if (cats.size() > 0) {
                RPT = cats.get(cats.size() - 1).toString();
            }


        }
        return null;
    }

    public String RegistarDiagnostico() {
        List cats = null;
        try {
            utx.begin();
            javax.persistence.Query q = em.createQuery("SELECT L.id FROM Utente L WHERE L.nif='" + nif + "'");
            cats = q.getResultList();
            utx.commit();
        } catch (Exception ex) {
            Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (cats.size() == 0) {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Tratamento Failed!",
                    "The nif specified is not correct.");
            context.addMessage(null, message);
        } else {
            Diagnostico diag = new Diagnostico();
            Date data = new Date();
            data.getDate();
            diag.setData(data);
            diag.setDiagnostico(diagnostico);
            diag.setIdutente(Integer.parseInt(cats.get(0).toString()));
            try {
                utx.begin();
                em.persist(diag);
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }


        }
        return null;
    }

    public String RegistarPlanoTratamento() {
        List cats = null;
        try {
            utx.begin();
            javax.persistence.Query q = em.createQuery("SELECT L.id FROM Utente L WHERE L.nif='" + nif + "'");
            cats = q.getResultList();
            utx.commit();
        } catch (Exception ex) {
            Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (cats.size() == 0) {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Plana de tratamento Failed!",
                    "The nif specified is not correct.");
            context.addMessage(null, message);
        } else {
            PlanoTratamento ptrat = new PlanoTratamento();
            Date data = new Date();
            data.getDate();
            ptrat.setData(data);
            ptrat.setnConsultas(Integer.parseInt(RPT));
            ptrat.setIdutente(Integer.parseInt(cats.get(0).toString()));
            try {
                utx.begin();
                em.persist(ptrat);
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }


        }

        return null;
    }

    public String RegistarTratamento() {

        List cats = null;
        try {
            utx.begin();
            javax.persistence.Query q = em.createQuery("SELECT L.id FROM Utente L WHERE L.nif='" + nif + "'");
            cats = q.getResultList();
            utx.commit();
        } catch (Exception ex) {
            Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (cats.size() == 0) {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Tratamento Failed!",
                    "The nif specified is not correct.");
            context.addMessage(null, message);
        } else {
            Tratamento trat = new Tratamento();
            Date data = new Date();
            data.getDate();
            trat.setData(data);
            trat.setTratamento(RT);
            trat.setIdutente(Integer.parseInt(cats.get(0).toString()));
            try {
                utx.begin();
                em.persist(trat);
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }


        }

        return null;
    }

    public String Create() {
        Date data = new Date();
        data.setYear(Integer.parseInt(ano));
        data.setDate(Integer.parseInt(dia));
        data.setMonth(Integer.parseInt(mes));
        Date data2 = new Date();
        data2.setYear(Integer.parseInt(decp3));
        data2.setDate(Integer.parseInt(decp2));
        data2.setMonth(Integer.parseInt(decp1));
        Medico medico = new Medico();
        Morada morada2 = new Morada();
        morada2.setCodigopostal(codigopostal1 + "-" + codigopostal2);
        morada2.setDistrito(morada);
        morada2.setLocalidade(localidade);
        medico.setNome(nome);
        medico.setTelefone(telefone);
        medico.setFax(fax);
        medico.setMail(email);
        medico.setAreasaude(areaSaude);
        medico.setDataNascimento(data);
        medico.setNumerocedula(Integer.parseInt(ordemprofissional));
        medico.setDecp(data2);
        medico.setNif(nif);
        medico.setNib(nib);
        medico.setPedidoadesao("PENDENTE");

        try {
            utx.begin();
            em.persist(morada2);
            utx.commit();
            medico.setIdmorada(morada2.getId());
            utx.begin();
            em.persist(medico);
            utx.commit();
        } catch (Exception ex) {
            Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;

    }

    public String ListarMedico() {

        List cats = null;
        tab = null;

        if (areaSaude.compareTo("D") == 0) {
            // obter os ids dos DENTISTAs com pedido de adesao pendente
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.id FROM Medico L WHERE L.areasaude='DENTISTA' and L.pedidoadesao='PENDENTE'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            // obter os ids dos ESTOMATOLOGISTAs com pedido de adesao pendente
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.id FROM Medico L WHERE L.areasaude='ESTOMATOLOGISTA' and L.pedidoadesao='PENDENTE'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        List nome_med = null;
        List decp_med = null;
        List mail_med = null;
        List nc_med = null;
        List nif_med = null;

        tab = new TabelaMedico[cats.size()];
        for (int x = 0; x < cats.size(); x++) {
            // obter nome do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.nome FROM Medico L WHERE L.id=" + cats.get(x));
                nome_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            // obter decp do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.decp FROM Medico L WHERE L.id=" + cats.get(x));
                decp_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            // obter mail do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.mail FROM Medico L WHERE L.id=" + cats.get(x));
                mail_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            // obter numerocedula do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.numerocedula FROM Medico L WHERE L.id=" + cats.get(x));
                nc_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            // obter numerocedula do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.nif FROM Medico L WHERE L.id=" + cats.get(x));
                nif_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }

            tab[x] = new TabelaMedico(nome_med.get(0).toString(), decp_med.get(0).toString(), mail_med.get(0).toString(), nc_med.get(0).toString(), nif_med.get(0).toString());
        }
        return null;
    }

    public String Validar() {

        List cats = null;
        tab = null;
        if (val_med.compareTo("") != 0) {
            //Obter estado do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.pedidoadesao FROM Medico L WHERE L.nif='" + val_med + "'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }

            // ver se existem medicos
            if (cats.size() != 0) {

                if (cats.get(0).toString().compareTo("PENDENTE") == 0) {
                    // fazer update ao estado do medico
                    try {
                        utx.begin();
                        javax.persistence.Query q = em.createQuery("UPDATE Medico U SET U.pedidoadesao='VALIDADO' WHERE U.nif='" + val_med + "'");
                        q.executeUpdate();
                        utx.commit();
                    } catch (Exception ex) {
                        Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
                    }

                } else {
                    FacesContext context = FacesContext.getCurrentInstance();
                    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                            "Validaçao Failed3!",
                            "O cheque ja esta pago.");
                    context.addMessage(null, message);
                }
            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Validaçao Failed2!",
                        "O numero inserido esta errado.");
                context.addMessage(null, message);
            }
        } else {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Validaçao Failed1!",
                    "O numero inserido esta errado.");
            context.addMessage(null, message);
        }
        ListarMedico();
        return null;
    }

    public String Cancelar() {

        List cats = null;
        tab = null;
        if (val_med.compareTo("") != 0) {
            //Obter estado do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.pedidoadesao FROM Medico L WHERE L.nif='" + val_med + "'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }

            // ver se existem medicos
            if (cats.size() != 0) {

                if (cats.get(0).toString().compareTo("PENDENTE") == 0) {
                    // fazer update ao estado do medico
                    try {
                        utx.begin();
                        javax.persistence.Query q = em.createQuery("UPDATE Medico U SET U.pedidoadesao='CANCELADO' WHERE U.nif='" + val_med + "'");
                        q.executeUpdate();
                        utx.commit();
                    } catch (Exception ex) {
                        Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } else {
                    FacesContext context = FacesContext.getCurrentInstance();
                    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                            "Validaçao Failed3!",
                            "O cheque ja esta pago.");
                    context.addMessage(null, message);
                }
            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Validaçao Failed2!",
                        "O numero inserido esta errado.");
                context.addMessage(null, message);
            }
        } else {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Validaçao Failed1!",
                    "O numero inserido esta errado.");
            context.addMessage(null, message);
        }
        ListarMedico();
        return null;
    }

    public String CreateMF() {
        Date data = new Date();
        data.setYear(Integer.parseInt(ano));
        data.setDate(Integer.parseInt(dia));
        data.setMonth(Integer.parseInt(mes));
        Date data2 = new Date();
        data2.setYear(Integer.parseInt(decp3));
        data2.setDate(Integer.parseInt(decp2));
        data2.setMonth(Integer.parseInt(decp1));
        Medico medico = new Medico();
        Morada morada2 = new Morada();
        morada2.setCodigopostal(codigopostal1 + "-" + codigopostal2);
        morada2.setDistrito(morada);
        morada2.setLocalidade(localidade);
        medico.setNome(nome);
        medico.setTelefone(telefone);
        medico.setFax(fax);
        medico.setMail(email);
        areaSaude = "MFAMILIA";
        medico.setAreasaude(areaSaude);
        medico.setDataNascimento(data);
        medico.setNumerocedula(Integer.parseInt(ordemprofissional));
        medico.setDecp(data2);
        medico.setNif(nif);
        medico.setNib(nib);
        medico.setPedidoadesao("CRIADO");

        try {
            utx.begin();
            em.persist(morada2);
            utx.commit();
            medico.setIdmorada(morada2.getId());
            utx.begin();
            em.persist(medico);
            utx.commit();
        } catch (Exception ex) {
            Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;

    }

    public String ListarMedicoACSS() {

        List cats = null;
        tab = null;


        if (areaSaude.compareTo("D") == 0) {
            // obter os ids dos DENTISTAs com pedido de adesao pendente
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.id FROM Medico L WHERE L.areasaude='DENTISTA' and L.pedidoadesao='VALIDADO'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if (areaSaude.compareTo("E") == 0) {
            // obter os ids dos ESTOMATOLOGISTAs com pedido de adesao pendente
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.id FROM Medico L WHERE L.areasaude='ESTOMATOLOGISTA' and L.pedidoadesao='VALIDADO'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            // obter os ids dos MFAMILIAs com pedido de adesao pendente
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.id FROM Medico L WHERE L.areasaude='MFAMILIA' and L.pedidoadesao='CRIADO'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        List nome_med = null;
        List mail_med = null;
        List nif_med = null;

        tab = new TabelaMedico[cats.size()];
        for (int x = 0; x < cats.size(); x++) {
            // obter nome do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.nome FROM Medico L WHERE L.id=" + cats.get(x));
                nome_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            // obter mail do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.mail FROM Medico L WHERE L.id=" + cats.get(x));
                mail_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }
            // obter numerocedula do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.nif FROM Medico L WHERE L.id=" + cats.get(x));
                nif_med = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }

            tab[x] = new TabelaMedico(nome_med.get(0).toString(), "", mail_med.get(0).toString(), "", nif_med.get(0).toString());
        }
        return null;
    }

    public String Credenciar() {

        List cats = null;
        tab = null;
        if (val_med.compareTo("") != 0) {
            //Obter estado do medico
            try {
                utx.begin();
                javax.persistence.Query q = em.createQuery("SELECT L.pedidoadesao FROM Medico L WHERE L.nif='" + val_med + "'");
                cats = q.getResultList();
                utx.commit();
            } catch (Exception ex) {
                Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
            }

            // ver se existem medicos
            if (cats.size() != 0) {

                if ((cats.get(0).toString().compareTo("VALIDADO") == 0) || (cats.get(0).toString().compareTo("CRIADO") == 0)) {


                    // criar credenciasi
                    Logging logg = new Logging();
                    logg.setPassword(pass);
                    logg.setUsername(log);
                    String rol;
                    if (areaSaude.compareTo("M") == 0) {
                        rol = "MFAMILIA";
                    } else {
                        rol = "DENTISTA";
                    }
                    logg.setRoles(rol);

                    try {
                        utx.begin();
                        em.persist(logg);
                        utx.commit();
                    } catch (Exception ex) {
                        Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    // fazer update ao id dologg do medico
                    try {
                        utx.begin();
                        javax.persistence.Query q = em.createQuery("UPDATE Medico U SET U.idlog=" + logg.getId() + " WHERE U.nif='" + val_med + "'");
                        q.executeUpdate();
                        utx.commit();
                    } catch (Exception ex) {
                        Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    // fazer update ao estado do medico
                    try {
                        utx.begin();
                        javax.persistence.Query q = em.createQuery("UPDATE Medico U SET U.pedidoadesao='CONCLUIDO' WHERE U.nif='" + val_med + "'");
                        q.executeUpdate();
                        utx.commit();
                    } catch (Exception ex) {
                        Logger.getLogger(Utentes.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } else {
                    FacesContext context = FacesContext.getCurrentInstance();
                    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                            "Validaçao Failed3!",
                            "O cheque ja esta pago.");
                    context.addMessage(null, message);
                }
            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Validaçao Failed2!",
                        "O numero inserido esta errado.");
                context.addMessage(null, message);
            }
        } else {
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Validaçao Failed1!",
                    "O numero inserido esta errado.");
            context.addMessage(null, message);
        }
        ListarMedicoACSS();
        return null;
    }

}
